package com.zhuoyue.system.mapper;

import java.util.List;

import com.zhuoyue.common.annotation.DataSource;
import com.zhuoyue.system.domain.ZigbeeDeviceLinkageRelation;
import com.zhuoyue.system.domain.vo.ZigbeeDeviceLinkageRelationVo;
import org.apache.ibatis.annotations.Param;

import static com.zhuoyue.common.enums.DataSourceType.SLAVE;

/**
 * 极享设备联动配置Mapper接口
 *
 * @author zyzn
 * @date 2021-09-24
 */
@DataSource(SLAVE)
public interface ZigbeeDeviceLinkageRelationMapper {
    /**
     * 查询极享设备联动配置
     *
     * @param id 极享设备联动配置ID
     * @return 极享设备联动配置
     */
    ZigbeeDeviceLinkageRelation selectZigbeeDeviceLinkageRelationById(String id);

    /**
     * 查询极享设备联动配置列表
     *
     * @param zigbeeDeviceLinkageRelation 极享设备联动配置
     * @return 极享设备联动配置集合
     */
    List<ZigbeeDeviceLinkageRelationVo> selectZigbeeDeviceLinkageRelationList(ZigbeeDeviceLinkageRelation zigbeeDeviceLinkageRelation);

    /**
     * 新增极享设备联动配置
     *
     * @param zigbeeDeviceLinkageRelation 极享设备联动配置
     * @return 结果
     */
    int insertZigbeeDeviceLinkageRelation(ZigbeeDeviceLinkageRelation zigbeeDeviceLinkageRelation);

    /**
     * 修改极享设备联动配置
     *
     * @param zigbeeDeviceLinkageRelation 极享设备联动配置
     * @return 结果
     */
    int updateZigbeeDeviceLinkageRelation(ZigbeeDeviceLinkageRelation zigbeeDeviceLinkageRelation);

    /**
     * 删除极享设备联动配置
     *
     * @param id 极享设备联动配置ID
     * @return 结果
     */
    int deleteZigbeeDeviceLinkageRelationById(String id);

    /**
     * 批量删除极享设备联动配置
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteZigbeeDeviceLinkageRelationByIds(String[] ids);

    /**
     * 查询数据总数
     *
     * @return
     */
    int selectCount();

    List<ZigbeeDeviceLinkageRelationVo> selectZigbeeDeviceLinkageRelationListParams(ZigbeeDeviceLinkageRelation relation);

    /**
     * 获取总数
     *
     * @return
     */
    Integer selectZigbeeDeviceLinkageRelationListParamsCount(ZigbeeDeviceLinkageRelation relation);

    /**
     * 根据类型查询类型名称
     *
     * @param deviceType
     * @return
     */
    String selectDeviceName(@Param("deviceType") String deviceType);
}
